Skip to content

license: canonicalize to MPL-2.0 (code) + CC-BY-SA-4.0 (docs), drop PMPL#33

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/wokelangiser-license-canonical
Jun 20, 2026
Merged

license: canonicalize to MPL-2.0 (code) + CC-BY-SA-4.0 (docs), drop PMPL#33
hyperpolymath merged 1 commit into
mainfrom
claude/wokelangiser-license-canonical

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

What

Replaces the inconsistent, half-migrated Palimpsest/PMPL licensing with one canonical rule — MPL-2.0 (code) + CC-BY-SA-4.0 (documentation) — wired up the REUSE way and CI-enforced so it can't slip back. Also completes the main.zig SPDX header fix (SD009).

The rule (now stated in every governing file)

  • Code / config / CI / scripts / .a2ml state / dotfiles / .well-knownMPL-2.0
  • Documentation & prose (*.adoc, *.md, docs/**) → CC-BY-SA-4.0
  • Repo as a whole = "MPL-2.0 AND CC-BY-SA-4.0"; GitHub community-health badge = MPL-2.0.

Changes

  • LICENSE — canonical MPL-2.0 text; the garbled "Palimpsest (MPL-2.0)" preamble is gone.
  • LICENSES/MPL-2.0.txt + LICENSES/CC-BY-SA-4.0.txt — verbatim SPDX texts (REUSE layout).
  • ~120 doc filesSPDX-License-Identifier: CC-BY-SA-4.0 (one per file, by type).
  • dep5{{placeholders}} substituted, docs→CC-BY-SA-4.0 stanza, rule documented.
  • Reset vectors neutralised — removed the k9 add-license recipe that curl-fetched the PMPL LICENSE over the top of LICENSE; both Trustfiles, Mustfile, and contractile.just now affirm MPL-2.0 instead of requiring the literal PMPL; rhodibot text corrected; Palimpsest legal exhibits removed.
  • Anti-slippage CI rulesmust-no-pmpl, must-licenses-present, must-docs-cc-by-sa (wired into must-check).
  • Declared everywhereLICENSE, dep5, README, 0-AI-MANIFEST.a2ml, .claude/CLAUDE.md, and new docs/decisions/0002-licensing-policy.adoc.
  • main.zig — SPDX header moved to line 1 (SD009).

Verified locally

  • grep -rniI 'palimpsest|pmpl' (outside policy-definition files) → 0 hits.
  • Every *.adoc/*.md carries the CC-BY-SA-4.0 header; both LICENSES/*.txt present; LICENSE line 4 = Mozilla Public License Version 2.0.
  • 137 files changed.

Note on the GitHub badge

GitHub detects only one licence (from root LICENSE). To guarantee it reads MPL-2.0 as requested, LICENSE is kept as essentially the pure MPL-2.0 text — the dual-licence statement lives prominently in README, dep5, ADR-0002, and the LICENSES/ folder rather than as a prose preamble inside LICENSE (extra prose there can flip GitHub's detector to "Other").

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y2MWTAqX2x7goVJzjFB4j5


Generated by Claude Code

Replaces the inconsistent, partially-migrated Palimpsest/PMPL licensing with one
canonical rule, wired up the REUSE way and CI-enforced against slippage.

- Root LICENSE: canonical MPL-2.0 text (so GitHub community-health detects MPL-2.0).
- LICENSES/MPL-2.0.txt + LICENSES/CC-BY-SA-4.0.txt (verbatim SPDX texts).
- Per-file SPDX by type: code/config/CI/.a2ml = MPL-2.0; docs (*.adoc/*.md, docs/**) = CC-BY-SA-4.0 (~120 files).
- REUSE dep5: placeholders substituted, docs->CC-BY-SA-4.0 stanza, rule documented.
- Killed PMPL reset vectors: removed k9 add-license curl-fetch of the PMPL LICENSE; Trustfile/Mustfile/contractile.just now affirm MPL-2.0 instead of requiring 'PMPL'; rhodibot text fixed.
- Anti-slippage CI rules: must-no-pmpl, must-licenses-present, must-docs-cc-by-sa.
- Rule declared in LICENSE, dep5, README, 0-AI-MANIFEST.a2ml, CLAUDE.md, and new ADR docs/decisions/0002-licensing-policy.adoc.
- Removed Palimpsest legal exhibits; moved main.zig SPDX header to top (SD009).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2MWTAqX2x7goVJzjFB4j5
@hyperpolymath hyperpolymath marked this pull request as ready for review June 20, 2026 08:46
@github-actions

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 8 issues detected

Severity Count
🔴 Critical 1
🟠 High 4
🟡 Medium 3

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in scorecard-enforcer.yml",
    "type": "scorecard_publish_with_run_step",
    "file": "scorecard-enforcer.yml",
    "action": "split_scorecard_publish_job",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Download-and-execute pattern (curl|wget pipe to shell) -- verify integrity before execution (3 occurrences, CWE-494)",
    "type": "shell_download_then_run",
    "file": "/home/runner/work/wokelangiser/wokelangiser/setup.sh",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "high"
  },
  {
    "line": 24,
    "reason": "Secret found: Generic API key",
    "type": "secret_detected",
    "file": "/home/runner/work/wokelangiser/wokelangiser/.envrc",
    "action": "revoke_rotate_and_purge",
    "rule_module": "security_errors",
    "severity": "critical"
  },
  {
    "reason": "Nominal-only SAST in wokelangiser: codeql.yml language matrix contains no language present in the repo and lacks `actions`, so CodeQL records zero results on every commit. Remediation: set the CodeQL matrix to `language: actions`.",
    "type": "StaticAnalysis",
    "file": "/home/runner/work/wokelangiser/wokelangiser",
    "action": "auto_fix",
    "rule_module": "scorecard",
    "severity": "medium",
    "remediation": "Add CodeQL or equivalent SAST workflow.",
    "scorecard_check": "SAST"
  },
  {
    "reason": "1 workflow(s) with tag-pinned (not SHA-pinned) actions in wokelangiser",
    "type": "DependencyPinning",
    "file": "/home/runner/work/wokelangiser/wokelangiser",
    "action": "auto_fix",
    "rule_module": "scorecard",
    "severity": "medium",
    "remediation": "Pin GitHub Actions and Docker base images by SHA hash.",
    "scorecard_check": "Pinned-Dependencies"
  },
  {
    "reason": "Repository has 12 non-main remote branch(es). Policy: single main branch only.",
    "type": "GS007",
    "file": ".",
    "action": "delete_remote_branches",
    "rule_module": "git_state",
    "severity": "medium"
  },
  {
    "reason": "Code scanning (Hypatia): hypatia/workflow_audit/scorecard_publish_with_run_step -- Hypatia workflow_audit: scorecard_publish_with_run_step -- 20 day(s) old [STALE]",
    "type": "CSA001",
    "file": "scorecard-enforcer.yml",
    "action": "escalate",
    "rule_module": "code_scanning_alerts",
    "severity": "high"
  },
  {
    "reason": "Code-scanning alert hypatia/workflow_audit/scorecard_publish_with_run_step (high) at scorecard-enforcer.yml is 20 days old (threshold: 7 days) -- overdue for remediation",
    "type": "CSA003",
    "file": "scorecard-enforcer.yml",
    "action": "escalate",
    "rule_module": "code_scanning_alerts",
    "severity": "high"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@hyperpolymath hyperpolymath merged commit b2313ca into main Jun 20, 2026
20 checks passed
@github-actions github-actions Bot deleted the claude/wokelangiser-license-canonical branch June 21, 2026 02:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants